<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>AXI muckbucket: axi_driver Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AXI muckbucket
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="classaxi__driver-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">axi_driver Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Logic to act as an AXI master for all 5 channels.  
 <a href="classaxi__driver.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for axi_driver:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver__inherit__graph.png" border="0" usemap="#axi__driver_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for axi_driver:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver__coll__graph.png" border="0" usemap="#axi__driver_coll__map" alt="Collaboration graph"/></div>
<map name="axi__driver_coll__map" id="axi__driver_coll__map">
<area shape="rect" id="node3" href="classmemory.html" title="Extremely simple memory model with just write() and read() methods. " alt="" coords="173,89,242,115"/>
<area shape="rect" id="node5" href="classaxi__agent__config.html" title="Configuration object for an axi_agent. " alt="" coords="270,89,390,115"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5223dd6dc498dca430624085bf25732d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a5223dd6dc498dca430624085bf25732d">uvm_component_utils</a> (<a class="el" href="classaxi__driver.html">axi_driver</a>) <a class="el" href="classaxi__if__abstract.html">axi_if_abstract</a> vif</td></tr>
<tr class="separator:a5223dd6dc498dca430624085bf25732d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f3429022f72c05b1f0b140e113774d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a> (string name=&quot;axi_driver&quot;, uvm_component parent=null)</td></tr>
<tr class="memdesc:a6f3429022f72c05b1f0b140e113774d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a6f3429022f72c05b1f0b140e113774d5">More...</a><br /></td></tr>
<tr class="separator:a6f3429022f72c05b1f0b140e113774d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14add6f8f066f75c40d24ea9061c9c48"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a14add6f8f066f75c40d24ea9061c9c48">build_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:a14add6f8f066f75c40d24ea9061c9c48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the virtual interface.  <a href="#a14add6f8f066f75c40d24ea9061c9c48">More...</a><br /></td></tr>
<tr class="separator:a14add6f8f066f75c40d24ea9061c9c48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa94820f5234934a33e735a95ff748241"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#aa94820f5234934a33e735a95ff748241">connect_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:aa94820f5234934a33e735a95ff748241"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nothing to connect so doesn't actually do anything except call parent connect phase.  <a href="#aa94820f5234934a33e735a95ff748241">More...</a><br /></td></tr>
<tr class="separator:aa94820f5234934a33e735a95ff748241"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a805fb1f256df6dedb3a6d62389203245"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245">run_phase</a> (uvm_phase phase)</td></tr>
<tr class="memdesc:a805fb1f256df6dedb3a6d62389203245"><td class="mdescLeft">&#160;</td><td class="mdescRight">Launches channel driver threads and then acts as a dispatcher.  <a href="#a805fb1f256df6dedb3a6d62389203245">More...</a><br /></td></tr>
<tr class="separator:a805fb1f256df6dedb3a6d62389203245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5948ddb7cc7b2f8f18b3d3d3f5530c03"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a5948ddb7cc7b2f8f18b3d3d3f5530c03">write_address</a> ()</td></tr>
<tr class="memdesc:a5948ddb7cc7b2f8f18b3d3d3f5530c03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Address channel thread.  <a href="#a5948ddb7cc7b2f8f18b3d3d3f5530c03">More...</a><br /></td></tr>
<tr class="separator:a5948ddb7cc7b2f8f18b3d3d3f5530c03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a415576ba733708ac11b31726bbd31cff"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a415576ba733708ac11b31726bbd31cff">write_data</a> ()</td></tr>
<tr class="memdesc:a415576ba733708ac11b31726bbd31cff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Data channel thread.  <a href="#a415576ba733708ac11b31726bbd31cff">More...</a><br /></td></tr>
<tr class="separator:a415576ba733708ac11b31726bbd31cff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa16a6b3196df0a50381d7dc7361de329"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#aa16a6b3196df0a50381d7dc7361de329">write_response</a> ()</td></tr>
<tr class="memdesc:aa16a6b3196df0a50381d7dc7361de329"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write Response channel thread.  <a href="#aa16a6b3196df0a50381d7dc7361de329">More...</a><br /></td></tr>
<tr class="separator:aa16a6b3196df0a50381d7dc7361de329"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4edb359e7927c729b939ebd992f83d05"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a4edb359e7927c729b939ebd992f83d05">read_address</a> ()</td></tr>
<tr class="memdesc:a4edb359e7927c729b939ebd992f83d05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read Address channel thread.  <a href="#a4edb359e7927c729b939ebd992f83d05">More...</a><br /></td></tr>
<tr class="separator:a4edb359e7927c729b939ebd992f83d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a916fc7b07ee0ecd3d20d8bfcaa292f6e"><td class="memItemLeft" align="right" valign="top">task&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a916fc7b07ee0ecd3d20d8bfcaa292f6e">read_data</a> ()</td></tr>
<tr class="memdesc:a916fc7b07ee0ecd3d20d8bfcaa292f6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">monitors Read Data channel and sends out TLM pkt  <a href="#a916fc7b07ee0ecd3d20d8bfcaa292f6e">More...</a><br /></td></tr>
<tr class="separator:a916fc7b07ee0ecd3d20d8bfcaa292f6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a04ce20f3e43634f19731150a745a2b03"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classaxi__agent__config.html">axi_agent_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a04ce20f3e43634f19731150a745a2b03">m_config</a></td></tr>
<tr class="separator:a04ce20f3e43634f19731150a745a2b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbd67cca9ea7c169442b88d843105385"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmemory.html">memory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#afbd67cca9ea7c169442b88d843105385">m_memory</a></td></tr>
<tr class="separator:afbd67cca9ea7c169442b88d843105385"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc54b63eea4660d0b1541578a277cf95"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#abc54b63eea4660d0b1541578a277cf95">writeaddress_mbx</a> = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td></tr>
<tr class="separator:abc54b63eea4660d0b1541578a277cf95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe4f7808c8c6f8c496b2c9166f7617b0"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#afe4f7808c8c6f8c496b2c9166f7617b0">writedata_mbx</a> = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td></tr>
<tr class="separator:afe4f7808c8c6f8c496b2c9166f7617b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a874a8bb6571afc7feeed780232ea5ad2"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a874a8bb6571afc7feeed780232ea5ad2">writeresponse_mbx</a> = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td></tr>
<tr class="separator:a874a8bb6571afc7feeed780232ea5ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a870d70c8914945a11b64e6e6ee2651b4"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a870d70c8914945a11b64e6e6ee2651b4">readaddress_mbx</a> = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td></tr>
<tr class="separator:a870d70c8914945a11b64e6e6ee2651b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a129919e98526a8ca6725368cea80e797"><td class="memItemLeft" align="right" valign="top">mailbox&lt; <a class="el" href="classaxi__seq__item.html">axi_seq_item</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classaxi__driver.html#a129919e98526a8ca6725368cea80e797">readdata_mbx</a> = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td></tr>
<tr class="separator:a129919e98526a8ca6725368cea80e797"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Logic to act as an AXI master for all 5 channels. </p>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00031">31</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a14add6f8f066f75c40d24ea9061c9c48"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void axi_driver::build_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates the virtual interface. </p>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00067">67</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

</div>
</div>
<a class="anchor" id="aa94820f5234934a33e735a95ff748241"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void axi_driver::connect_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Nothing to connect so doesn't actually do anything except call parent connect phase. </p>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00076">76</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

</div>
</div>
<a class="anchor" id="a6f3429022f72c05b1f0b140e113774d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">axi_driver::new </td>
          <td>(</td>
          <td class="paramtype">string&#160;</td>
          <td class="paramname"><em>name</em> = <code>&quot;axi_driver&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uvm_component&#160;</td>
          <td class="paramname"><em>parent</em> = <code>null</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Doesn't actually do anything except call parent constructor </p>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00062">62</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

</div>
</div>
<a class="anchor" id="a4edb359e7927c729b939ebd992f83d05"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::read_address </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read Address channel thread. </p>
<ol type="1">
<li>Deassert arvalid</li>
<li>Wait for TLM item in mailbox</li>
<li>Initialize variables</li>
<li>Write out</li>
<li>if ready and valid, wait X clocks where x&gt;=0, then check for any more queued items</li>
<li>if avail, then fetch and goto 'Initialize variables' step.</li>
<li>if no items to be driven on next clk, drive all read address signals low and goto 'Wait for TLM item in mailbox' step. </li>
</ol>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00515">515</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__uvm__pkg_8sv_source.html#l00039">ADDR_WIDTH</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00193">ar_from_class()</a>, <a class="el" href="axi__pkg_8sv_source.html#l00180">axi_seq_item_ar_vector_s::araddr</a>, <a class="el" href="axi__pkg_8sv_source.html#l00185">axi_seq_item_ar_vector_s::arburst</a>, <a class="el" href="axi__pkg_8sv_source.html#l00179">axi_seq_item_ar_vector_s::arid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00184">axi_seq_item_ar_vector_s::arsize</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__driver_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00078">axi_agent_config::max_clks_between_ar_transfers</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00077">axi_agent_config::min_clks_between_ar_transfers</a>, <a class="el" href="axi__driver_8svh_source.html#l00041">readaddress_mbx</a>, and <a class="el" href="axi__driver_8svh_source.html#l00042">readdata_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_cgraph.png" border="0" usemap="#classaxi__driver_a4edb359e7927c729b939ebd992f83d05_cgraph" alt=""/></div>
<map name="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_cgraph" id="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_cgraph">
<area shape="rect" id="node2" href="axi__uvm__pkg_8sv.html#a0f4d0c18dcaf8e3158783999e74b7a94" title="take values from an axi_seq_item and stuff into a axi_seq_item_ar_vector_s " alt="" coords="260,42,364,69"/>
<area shape="rect" id="node6" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="217,93,407,119"/>
<area shape="rect" id="node3" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="478,13,590,39"/>
<area shape="rect" id="node5" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="455,64,613,105"/>
<area shape="rect" id="node4" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="661,5,812,47"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_icgraph.png" border="0" usemap="#classaxi__driver_a4edb359e7927c729b939ebd992f83d05_icgraph" alt=""/></div>
<map name="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_icgraph" id="classaxi__driver_a4edb359e7927c729b939ebd992f83d05_icgraph">
<area shape="rect" id="node2" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245" title="Launches channel driver threads and then acts as a dispatcher. " alt="" coords="217,5,364,32"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a916fc7b07ee0ecd3d20d8bfcaa292f6e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::read_data </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>monitors Read Data channel and sends out TLM pkt </p>
<p>This task should match the corresponding on in <a class="el" href="classaxi__monitor.html" title="monitors all 5 channels for activity ">axi_monitor</a> but it doesn't yet </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>: match read_data task in <a class="el" href="classaxi__monitor.html" title="monitors all 5 channels for activity ">axi_monitor</a> Instead it waits for a pkt in its mailbox. This packet will come from read_address once it has put the address out on the bus. The just continually waits for a valid and ready beat on the channel and stores it in that packet it got from read address. When rlast received, send out analysis port and goes back to waiting for next pkt from read address. </dd></dl>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00605">605</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00043">axi_seq_item::addr</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00039">ADDR_WIDTH</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00048">axi_seq_item::burst_size</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00049">axi_seq_item::burst_type</a>, <a class="el" href="axi__pkg_8sv_source.html#l00320">calculate_axlen()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00071">axi_seq_item::cmd</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00044">axi_seq_item::data</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00059">e_READ_DATA</a>, <a class="el" href="axi__pkg_8sv_source.html#l00538">get_beat_N_byte_lanes()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00045">axi_seq_item::len</a>, <a class="el" href="axi__driver_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__pkg_8sv_source.html#l00206">axi_seq_item_r_vector_s::rdata</a>, <a class="el" href="axi__driver_8svh_source.html#l00042">readdata_mbx</a>, and <a class="el" href="axi__agent__config_8svh_source.html#l00059">axi_agent_config::rready_toggle_pattern</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_cgraph.png" border="0" usemap="#classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_cgraph" alt=""/></div>
<map name="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_cgraph" id="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_cgraph">
<area shape="rect" id="node2" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="219,21,331,47"/>
<area shape="rect" id="node4" href="axi__pkg_8sv.html#a269e42497226a3a0def0fc1bfdd7d22a" title="return byte lanes that contain valid data " alt="" coords="196,78,355,105"/>
<area shape="rect" id="node3" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="407,5,557,47"/>
<area shape="rect" id="node5" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="403,71,561,112"/>
<area shape="rect" id="node6" href="axi__pkg_8sv.html#a4af175634a55ae773681009062989a5d" title="calculate bus&#45;siz aligned address " alt="" coords="407,136,557,177"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_icgraph.png" border="0" usemap="#classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_icgraph" alt=""/></div>
<map name="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_icgraph" id="classaxi__driver_a916fc7b07ee0ecd3d20d8bfcaa292f6e_icgraph">
<area shape="rect" id="node2" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245" title="Launches channel driver threads and then acts as a dispatcher. " alt="" coords="196,5,343,32"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a805fb1f256df6dedb3a6d62389203245"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::run_phase </td>
          <td>(</td>
          <td class="paramtype">uvm_phase&#160;</td>
          <td class="paramname"><em>phase</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Launches channel driver threads and then acts as a dispatcher. </p>
<p>After launching 5 different threads (one for each channel), this task acts as a dispatcher. It waits for TLM packets and then stuffs them into the appropriate thread's mailbox. IE: If it's an AXI write packet then it puts the packet into the write_address's mailbox so it can handle it. It the waits for the next TLM packet. NOTE: it does not wait for the other thread to finish processing the packet, it just puts it in the mailbox and then immediately waits for the next packet. </p>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00091">91</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00071">axi_seq_item::cmd</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00058">e_READ</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00057">e_WRITE</a>, <a class="el" href="axi__driver_8svh_source.html#l00515">read_address()</a>, <a class="el" href="axi__driver_8svh_source.html#l00605">read_data()</a>, <a class="el" href="axi__driver_8svh_source.html#l00041">readaddress_mbx</a>, <a class="el" href="axi__driver_8svh_source.html#l00138">write_address()</a>, <a class="el" href="axi__driver_8svh_source.html#l00233">write_data()</a>, <a class="el" href="axi__driver_8svh_source.html#l00479">write_response()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00038">writeaddress_mbx</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a805fb1f256df6dedb3a6d62389203245_cgraph.png" border="0" usemap="#classaxi__driver_a805fb1f256df6dedb3a6d62389203245_cgraph" alt=""/></div>
<map name="classaxi__driver_a805fb1f256df6dedb3a6d62389203245_cgraph" id="classaxi__driver_a805fb1f256df6dedb3a6d62389203245_cgraph">
<area shape="rect" id="node2" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="423,56,612,83"/>
<area shape="rect" id="node3" href="classaxi__driver.html#a4edb359e7927c729b939ebd992f83d05" title="Read Address channel thread. " alt="" coords="205,5,369,32"/>
<area shape="rect" id="node8" href="classaxi__driver.html#a916fc7b07ee0ecd3d20d8bfcaa292f6e" title="monitors Read Data channel and sends out TLM pkt " alt="" coords="446,275,589,301"/>
<area shape="rect" id="node11" href="classaxi__driver.html#a5948ddb7cc7b2f8f18b3d3d3f5530c03" title="Write Address channel thread. " alt="" coords="204,107,371,133"/>
<area shape="rect" id="node13" href="classaxi__driver.html#a415576ba733708ac11b31726bbd31cff" title="Write Data channel thread. " alt="" coords="214,157,361,184"/>
<area shape="rect" id="node15" href="classaxi__driver.html#aa16a6b3196df0a50381d7dc7361de329" title="Write Response channel thread. " alt="" coords="200,259,375,285"/>
<area shape="rect" id="node4" href="axi__uvm__pkg_8sv.html#a0f4d0c18dcaf8e3158783999e74b7a94" title="take values from an axi_seq_item and stuff into a axi_seq_item_ar_vector_s " alt="" coords="465,5,569,32"/>
<area shape="rect" id="node5" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="683,157,795,184"/>
<area shape="rect" id="node7" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="867,85,1025,126"/>
<area shape="rect" id="node6" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="871,150,1021,191"/>
<area shape="rect" id="node9" href="axi__pkg_8sv.html#a269e42497226a3a0def0fc1bfdd7d22a" title="return byte lanes that contain valid data " alt="" coords="660,220,819,247"/>
<area shape="rect" id="node10" href="axi__pkg_8sv.html#a4af175634a55ae773681009062989a5d" title="calculate bus&#45;siz aligned address " alt="" coords="871,215,1021,257"/>
<area shape="rect" id="node12" href="axi__uvm__pkg_8sv.html#a3c088311f24952a34d4689161adaac3e" title="Pull values out of axi_seq_item and stuff into a axi_seq_item_aw_vector_s. " alt="" coords="462,107,573,133"/>
<area shape="rect" id="node14" href="classaxi__seq__item.html#acde9a137c164b77ec0846fe343870215" title="return beat values for write data and read data channels " alt="" coords="439,209,596,250"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a5223dd6dc498dca430624085bf25732d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">axi_driver::uvm_component_utils </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classaxi__driver.html">axi_driver</a>&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a5948ddb7cc7b2f8f18b3d3d3f5530c03"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::write_address </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Address channel thread. </p>
<ol type="1">
<li>Deassert awvalid</li>
<li>Wait for TLM item in mailbox</li>
<li>Initialize variables</li>
<li>Write out</li>
<li>if ready and valid, wait X clocks where x&gt;=0, then check for any more queued items</li>
<li>if avail, then fetch and goto 'Initialize variables' step.</li>
<li>if no items to be driven on next clk, drive all write address signals low and goto 'Wait for TLM item in mailbox' step. </li>
</ol>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00138">138</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__uvm__pkg_8sv_source.html#l00039">ADDR_WIDTH</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00094">aw_from_class()</a>, <a class="el" href="axi__pkg_8sv_source.html#l00115">axi_seq_item_aw_vector_s::awaddr</a>, <a class="el" href="axi__pkg_8sv_source.html#l00120">axi_seq_item_aw_vector_s::awburst</a>, <a class="el" href="axi__pkg_8sv_source.html#l00114">axi_seq_item_aw_vector_s::awid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00119">axi_seq_item_aw_vector_s::awsize</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__driver_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00069">axi_agent_config::max_clks_between_aw_transfers</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00068">axi_agent_config::min_clks_between_aw_transfers</a>, <a class="el" href="axi__driver_8svh_source.html#l00038">writeaddress_mbx</a>, and <a class="el" href="axi__driver_8svh_source.html#l00039">writedata_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_cgraph.png" border="0" usemap="#classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_cgraph" alt=""/></div>
<map name="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_cgraph" id="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_cgraph">
<area shape="rect" id="node2" href="axi__uvm__pkg_8sv.html#a3c088311f24952a34d4689161adaac3e" title="Pull values out of axi_seq_item and stuff into a axi_seq_item_aw_vector_s. " alt="" coords="259,42,370,69"/>
<area shape="rect" id="node6" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="220,93,409,119"/>
<area shape="rect" id="node3" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="481,13,593,39"/>
<area shape="rect" id="node5" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="457,64,616,105"/>
<area shape="rect" id="node4" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="664,5,815,47"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_icgraph.png" border="0" usemap="#classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_icgraph" alt=""/></div>
<map name="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_icgraph" id="classaxi__driver_a5948ddb7cc7b2f8f18b3d3d3f5530c03_icgraph">
<area shape="rect" id="node2" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245" title="Launches channel driver threads and then acts as a dispatcher. " alt="" coords="220,5,367,32"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a415576ba733708ac11b31726bbd31cff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::write_data </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Data channel thread. </p>
<ol type="1">
<li>Deassert wvalid</li>
<li>wait for TLM item to get queued</li>
<li>initialize variables</li>
<li>loop</li>
<li>update variables when wready &amp; wvalid (slave has received current beat)</li>
<li>write out</li>
<li>if wlast and ready and valid, wait X clocks where x&gt;=0, then check for any more queued items</li>
<li>if avail, then fetch and goto 'Initialize variables' step.</li>
<li>if no items to be driven on next clk, the drive all write data signals low and goto 'Wait for TLM item to get queued' step. </li>
</ol>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00233">233</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00043">axi_seq_item::addr</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00088">axi_agent_config::axi_incompatible_wvalid_toggling_mode</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00048">axi_seq_item::burst_size</a>, <a class="el" href="axi__pkg_8sv_source.html#l00320">calculate_axlen()</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00096">axi_agent_config::clks_without_wvalid_or_wready_max</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00288">axi_seq_item::convert2string()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00492">axi_seq_item::get_beat_N_data()</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00045">axi_seq_item::len</a>, <a class="el" href="axi__driver_8svh_source.html#l00035">m_config</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00072">axi_agent_config::max_clks_between_w_transfers</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00071">axi_agent_config::min_clks_between_w_transfers</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00052">axi_seq_item::valid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00142">axi_seq_item_w_vector_s::wdata</a>, <a class="el" href="axi__pkg_8sv_source.html#l00144">axi_seq_item_w_vector_s::wlast</a>, <a class="el" href="axi__driver_8svh_source.html#l00039">writedata_mbx</a>, <a class="el" href="axi__driver_8svh_source.html#l00040">writeresponse_mbx</a>, <a class="el" href="axi__pkg_8sv_source.html#l00143">axi_seq_item_w_vector_s::wstrb</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00051">axi_agent_config::wvalid</a>, and <a class="el" href="axi__pkg_8sv_source.html#l00145">axi_seq_item_w_vector_s::wvalid</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a415576ba733708ac11b31726bbd31cff_cgraph.png" border="0" usemap="#classaxi__driver_a415576ba733708ac11b31726bbd31cff_cgraph" alt=""/></div>
<map name="classaxi__driver_a415576ba733708ac11b31726bbd31cff_cgraph" id="classaxi__driver_a415576ba733708ac11b31726bbd31cff_cgraph">
<area shape="rect" id="node2" href="axi__pkg_8sv.html#afbfbf7a50bf6dabae3804e39d05434b1" title="calculate awlen or arlen " alt="" coords="461,13,573,39"/>
<area shape="rect" id="node4" href="classaxi__seq__item.html#a510d32edb7887045a31a308bc7198c46" title="Convert item&#39;s variable into one printable string. " alt="" coords="200,51,389,78"/>
<area shape="rect" id="node5" href="classaxi__seq__item.html#acde9a137c164b77ec0846fe343870215" title="return beat values for write data and read data channels " alt="" coords="216,103,373,144"/>
<area shape="rect" id="node3" href="axi__pkg_8sv.html#a1bb88ba6ed9a3a081a64f90042a681b5" title="calculate how unaligned the address is from the burst size " alt="" coords="648,5,799,47"/>
<area shape="rect" id="node6" href="axi__pkg_8sv.html#a269e42497226a3a0def0fc1bfdd7d22a" title="return byte lanes that contain valid data " alt="" coords="437,110,596,137"/>
<area shape="rect" id="node7" href="axi__pkg_8sv.html#a6c8ade980c77973114ddfd403d25bc23" title="calculate burst_size aligned address " alt="" coords="644,81,803,123"/>
<area shape="rect" id="node8" href="axi__pkg_8sv.html#a4af175634a55ae773681009062989a5d" title="calculate bus&#45;siz aligned address " alt="" coords="648,147,799,188"/>
</map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_a415576ba733708ac11b31726bbd31cff_icgraph.png" border="0" usemap="#classaxi__driver_a415576ba733708ac11b31726bbd31cff_icgraph" alt=""/></div>
<map name="classaxi__driver_a415576ba733708ac11b31726bbd31cff_icgraph" id="classaxi__driver_a415576ba733708ac11b31726bbd31cff_icgraph">
<area shape="rect" id="node2" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245" title="Launches channel driver threads and then acts as a dispatcher. " alt="" coords="200,5,347,32"/>
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa16a6b3196df0a50381d7dc7361de329"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">task axi_driver::write_response </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write Response channel thread. </p>
<p>Wait for write response (bvalid and bready) Convert to TLM itemand send back to sequence </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>: this task needs to be cleaned up. it doesn't actually wait for response</dd></dl>

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00479">479</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>References <a class="el" href="axi__seq__item_8svh_source.html#l00068">axi_seq_item::bid</a>, <a class="el" href="axi__pkg_8sv_source.html#l00163">axi_seq_item_b_vector_s::bid</a>, <a class="el" href="axi__agent__config_8svh_source.html#l00058">axi_agent_config::bready_toggle_pattern</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00069">axi_seq_item::bresp</a>, <a class="el" href="axi__pkg_8sv_source.html#l00164">axi_seq_item_b_vector_s::bresp</a>, <a class="el" href="axi__seq__item_8svh_source.html#l00071">axi_seq_item::cmd</a>, <a class="el" href="axi__uvm__pkg_8sv_source.html#l00061">e_WRITE_RESPONSE</a>, <a class="el" href="axi__driver_8svh_source.html#l00035">m_config</a>, and <a class="el" href="axi__driver_8svh_source.html#l00040">writeresponse_mbx</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classaxi__driver_aa16a6b3196df0a50381d7dc7361de329_icgraph.png" border="0" usemap="#classaxi__driver_aa16a6b3196df0a50381d7dc7361de329_icgraph" alt=""/></div>
<map name="classaxi__driver_aa16a6b3196df0a50381d7dc7361de329_icgraph" id="classaxi__driver_aa16a6b3196df0a50381d7dc7361de329_icgraph">
<area shape="rect" id="node2" href="classaxi__driver.html#a805fb1f256df6dedb3a6d62389203245" title="Launches channel driver threads and then acts as a dispatcher. " alt="" coords="228,5,375,32"/>
</map>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a04ce20f3e43634f19731150a745a2b03"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classaxi__agent__config.html">axi_agent_config</a> axi_driver::m_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00035">35</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__agent_8svh_source.html#l00072">axi_agent::build_phase()</a>, <a class="el" href="axi__driver_8svh_source.html#l00515">read_address()</a>, <a class="el" href="axi__driver_8svh_source.html#l00605">read_data()</a>, <a class="el" href="axi__driver_8svh_source.html#l00138">write_address()</a>, <a class="el" href="axi__driver_8svh_source.html#l00233">write_data()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00479">write_response()</a>.</p>

</div>
</div>
<a class="anchor" id="afbd67cca9ea7c169442b88d843105385"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmemory.html">memory</a> axi_driver::m_memory</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00036">36</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__agent_8svh_source.html#l00072">axi_agent::build_phase()</a>.</p>

</div>
</div>
<a class="anchor" id="a870d70c8914945a11b64e6e6ee2651b4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_driver::readaddress_mbx = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00041">41</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00515">read_address()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>.</p>

</div>
</div>
<a class="anchor" id="a129919e98526a8ca6725368cea80e797"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_driver::readdata_mbx = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00042">42</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00515">read_address()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00605">read_data()</a>.</p>

</div>
</div>
<a class="anchor" id="abc54b63eea4660d0b1541578a277cf95"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_driver::writeaddress_mbx = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00038">38</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00091">run_phase()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00138">write_address()</a>.</p>

</div>
</div>
<a class="anchor" id="afe4f7808c8c6f8c496b2c9166f7617b0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_driver::writedata_mbx = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00039">39</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00138">write_address()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00233">write_data()</a>.</p>

</div>
</div>
<a class="anchor" id="a874a8bb6571afc7feeed780232ea5ad2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mailbox&lt;<a class="el" href="classaxi__seq__item.html">axi_seq_item</a>&gt; axi_driver::writeresponse_mbx = <a class="el" href="classaxi__driver.html#a6f3429022f72c05b1f0b140e113774d5">new</a>(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="axi__driver_8svh_source.html#l00040">40</a> of file <a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a>.</p>

<p>Referenced by <a class="el" href="axi__driver_8svh_source.html#l00233">write_data()</a>, and <a class="el" href="axi__driver_8svh_source.html#l00479">write_response()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>tb/<a class="el" href="axi__driver_8svh_source.html">axi_driver.svh</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
